package step1_homework3;
/*
      编程获取两个指定字符串中的最大相同子串并打印出来。
      如： s1="asdafghjka", s2="aaasdfg" 他们的最大子串为"asd"
      提示： 将短的那个串进行长度依次递减的子串与较长的串比较

     思路：str2 7个字符 索引：0-6 aaasdfg

          str2 6个字符 索引：0-5 aaasdf 1-6 aasdfg

          str2 5个字符 索引：0-4 aaasd 1-5 aasdf 2-6 asdfg

          str2 4个字符 索引：0-3 aaas 1-4 aasd 2-5 asdf 3-6 sdfg

          str2 3个字符 索引：0-2 aaa 1-3 aas 2-4 asd 3-5 sdf 4-6 dfg

          str2 2个字符 索引：0-1 aa 1-2 aa 2-3 as 3-4 sd 4-5 df 5-6 fg

          str2 1个字符 索引：0 a 1 a 2 a 3 s 4 d 5 f 6 g
 */
public class Test02 {

    public static void main(String[] args) {
        String str1 = "asdafghjka";
        String str2 = "aaasdfg";
        String max =  (str1.length()>str2.length())? str1 : str2;      //判断字符串中谁是最大的字符串
        String min =  (str1.length()<str2.length())? str1 : str2;      //判断字符串中谁是最小的字符串
        String str3;                                                   //用于记录临时拆分出来的字符串
       out :for (int i = 1; i < min.length()+1;i++){
            for (int j =0,k=min.length()-i;k!=min.length();j++,k++){      //将最小字符串分别按其下表起始位置进行拆分，并赋值给str3
                str3 = min.substring(j,k);
                if (max.contains(str3)) {                            //如果拆分出来的字符串包含在最大字符串内，则打印字符串信息并跳出外循环，反之继续
                    System.out.println("最大子串是：" + str3);
                    break out;
                }
            }
        }

    }
}
